When virtualized applications (i.e., applications that execute within one or more virtual machines) are deployed to a cloud infrastructure, a number of errors may occur in connection with the deployment. The cloud infrastructure may have insufficient resources available to host virtual machines that are to be deployed for the application. Further, some cloud infrastructures have certain policies with respect to the characteristics of virtual machines that are to be deployed therein. For example, a cloud infrastructure may have a policy that specifies a maximum virtual memory size or a maximum number of virtual central processing units (CPUs) that any virtual machine deployed therein may have. A request to deploy a virtual machine to a cloud infrastructure that lacks sufficient computing resources or that violates a cloud infrastructure policy is usually rejected.
The rejection of a request to deploy a virtual machine in a cloud infrastructure is typically accompanied by the generation of some form of error message, as well as the writing of that error message to a system log. However, the deployer of an application (e.g., a system administrator or application modeler) submits deployment requests from a deployment platform that typically does not have access to the system logs of a cloud computing platform. In some cases, such a deployment platform has the ability to issue deployment requests for several virtual machines, all of which may be associated with a single application. However, cloud infrastructure servers (to which deployment requests are issued) do not maintain associations of virtual machines with applications. Thus, if a deployment request is rejected due to, for example, any of the aforementioned reasons, the deployer of the application has no way of obtaining from the deployment platform any information that indicates why the deployment request was rejected. Further, in the case of a multi-virtual machine application deployment, the application deployer has no way of determining exactly which of the virtual machines of an application failed to deploy. The problem is magnified in situations where an administrator attempts to deploy several complex applications simultaneously.
In most cases, the only way for an administrator to determine why (or even whether) the deployment was rejected (or experienced a serious error) is to attempt to use the improperly deployed application, or, alternatively, to scan the system logs associated with the cloud infrastructure. System logs for a cloud infrastructure are typically very large and cryptic files that contain information pertaining to all activity in the cloud infrastructure, not just a particular deployment. The task of analyzing such logs to determine why a deployment request failed is thus very time consuming.